package br.com.bmb.monitorimoveis.persistencia.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;

import br.com.bmb.monitorimoveis.entidade.Cidade;
import br.com.bmb.monitorimoveis.entidade.Estado;
import br.com.bmb.monitorimoveis.persistencia.ICidadeDAO;

@Service
public class CidadeDAO extends AbstractDAO<Cidade, Long> implements ICidadeDAO {	

	@SuppressWarnings("unchecked")
	public List<Cidade> pesquisarPorNome(String nomeCidade) {
		
		Query q = getSession().createQuery(" from Cidade where nome like :nomeCidade");
		q.setParameter("nomeCidade", "%" + nomeCidade + "%");
		
		return (List<Cidade>) q.list();
	}

	@SuppressWarnings("unchecked")
	public List<Cidade> pesquisarPorNomeExbicao(String nomeCidadeExibicao) {
		Query q = getSession().createQuery(" from Cidade where nomeExibicao like :nomeCidadeExibicao");
		q.setParameter("nomeCidadeExibicao", "%" + nomeCidadeExibicao + "%");
		
		return  (List<Cidade>) q.list();
	}

	@SuppressWarnings("unchecked")
	public List<Cidade> pesquisarPorEstado(Estado estado) {
		Criteria criteria = getSession().createCriteria(Cidade.class);
		criteria.add(Restrictions.eq("estado", estado));
		
		return (List<Cidade>) criteria.list();
	}

	@Override
	protected Class<?> getObjectType() {
		return Cidade.class;
	}
		
	

}
